iT邦幫忙

2024 iThome 鐵人賽

DAY 26
0

後的部分為步驟3講解和認識Cookie與Session

產生SQLite資料庫檔案:

(env) D: \db\src> python
from guestbook import db
db.create_all()

切換到虛擬環境再執行Python
最後輸入db的creat_all即可建立

Cookie
用戶端 Cookie(餅乾):瀏覽器在用戶端儲存的少量資料(不超過4KB),像餐廳的桌號。

Session
伺服器端 Session(會談):在伺服器端保存目前連線用戶的資料;Session必須和 Cookie 搭配使用。像餐廳的訂單,上面有桌號以及點餐容內。

Cookie例:

from flask import Flask, request, make_response
app = Flask (__name__)

@app.route(' / ')
def index():
       if not request.cookies.get('user'):
            res = make_response('設定Cookie…')
            res. set_cookie( 'user', 'Maker', max_age=60*3)

       else:
           usr = request.cookies['user']
           res = f' {usr}你好!'
       return res

此程式碼是在首頁讀取及設定 cookie的程式碼,當使用者請求此首頁時,程式將嘗試從用戶的「HTTP請求」取得名叫 Lser”的 cooke 資料,如果沒有的話,則透過「HTTP 回應物件」的 set cookie() 方法設定一個user值為Maker的 cookie

request.cookies.get('資料名稱')

回應物件.set_cookies(「資料名稱', '值', max_age=保存秒值)

Session例:

from datetime import timedelta
from flask import (Flask, redirect, render_template, request, session, url_for)


app = Flask (__name__)
app.config['SECRET_KEY'] = b'_5#y2L"F4Q8z\nlxec]/'
設定密鑰
app.config['PERMANENT_SESSION_LIFETIME'] = timedelta (minutes=3)
設定有效時間,3分鐘


@app.route(' /')
def index():
       if 'user' in session:
           usr = session['user']
           return f'歡迎回來,{usr}!\
                      <br><a href="/logout">登出</a>'
       return '路人甲你好!'


@app.route ('/login', methods=['GET', 'POST'])
def login():
       if request.method == 'POST' :
              session['user'] = request.form['user']
              session.permanent = True
              return redirect(url_for('index'))
       return render_template('login_session.html')


@app.route('/logout')
def logout():
      session.pop('user', None)
      return redirect(url_for('index'))

上一篇
Day25 資料庫(2)
下一篇
Day27 聊天機器人(1)
系列文
從0開始學PYTHON30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言